#!/bin/bash

# DataLink 优化后启动脚本
# 全面测试Spring Bean配置和H2数据库迁移

echo "🚀 DataLink 优化后系统启动脚本"
echo "=================================="

# 设置颜色输出
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
BLUE='\033[0;34m'
NC='\033[0m' # No Color

# 错误处理
set -e
trap 'echo -e "${RED}❌ 启动失败！${NC}"; exit 1' ERR

echo -e "${BLUE}📋 系统优化总结：${NC}"
echo "✅ Spring组件扫描：启用完整扫描（controller, service, config, security）"
echo "✅ Bean配置：移除手动注册，使用自动扫描"
echo "✅ 数据库：LMDB → H2完全迁移"
echo "✅ 配置清理：移除所有LMDB引用"
echo "✅ 依赖注入：修复ActorSystem注入"
echo ""

# 检查Java版本
echo -e "${BLUE}🔍 检查Java环境...${NC}"
java -version
echo ""

# 进入datalink-web目录
cd datalink-web

# 清理并编译
echo -e "${BLUE}🧹 清理并编译项目...${NC}"
mvn clean compile -q
if [ $? -eq 0 ]; then
    echo -e "${GREEN}✅ 编译成功${NC}"
else
    echo -e "${RED}❌ 编译失败${NC}"
    exit 1
fi

# 复制依赖
echo -e "${BLUE}📦 复制依赖库...${NC}"
mvn dependency:copy-dependencies -DoutputDirectory=target/lib -q
if [ $? -eq 0 ]; then
    echo -e "${GREEN}✅ 依赖复制成功${NC}"
else
    echo -e "${RED}❌ 依赖复制失败${NC}"
    exit 1
fi

# 启动应用
echo -e "${BLUE}🚀 启动DataLink应用...${NC}"
echo "端口: 9966"
echo "配置: dev"
echo "数据库: H2"
echo ""

# 启动应用并显示启动日志
java -cp "target/classes:target/lib/*" com.leon.datalink.web.Datalink \
    --server.port=9966 \
    --spring.profiles.active=dev \
    --logging.level.com.leon.datalink=INFO \
    --logging.level.org.springframework=WARN \
    --logging.level.akka=WARN
